package a.c;

import a.i.l;
import a.i.n;

import java.lang.reflect.Array;
import java.util.*;

public class z
  implements Collection, List
{
  int a;
  v b;
  v c;
  int d;
  public static int e;
  public static int f;
  
  public z()
  {
    this.d = -2147483648;
  }
  
  public z(Collection paramCollection)
  {
    this(paramCollection.iterator());
  }
  
  public z(Iterator paramIterator)
  {
    if (paramIterator.hasNext()) {}
    while (j != 0)
    {
      b(paramIterator.next());
      if ((j == 0) && (i != 0)) {
        return;
      }
      if (i == 0) {
        break;
      }
    }
    this.d = -2147483648;
  }
  
  public z(y paramy)
  {
    paramy.h();
    if (paramy.e()) {}
    while (j != 0)
    {
      b(paramy.j());
      paramy.f();
      if ((j == 0) && (i != 0)) {
        return;
      }
      if (i == 0) {
        break;
      }
    }
    this.d = -2147483648;
  }
  
  public z(y paramy, k paramk)
  {
    paramy.h();
    do
    {
      while (i == 0)
      {
        if (!paramy.e()) {
          break;
        }
        if (j == 0)
        {
          if (paramk.getBool(paramy.j())) {
            b(paramy.j());
          }
          paramy.f();
        }
      }
      this.d = -2147483648;
    } while (j != 0);
  }
  
  public z(Object[] paramArrayOfObject)
  {
    int i = paramArrayOfObject.length - 1;
    if (i >= 0) {}
    while (k != 0)
    {
      a(paramArrayOfObject[i]);
      i--;
      if ((k == 0) && (j != 0)) {
        return;
      }
      if (j == 0) {
        break;
      }
    }
    this.d = -2147483648;
  }
  
  public v a(Object paramObject)
  {
    int i = f;
    v localv = e(paramObject);
    if (i == 0)
    {
      if (this.b == null)
      {
        this.b = (this.c = localv);
        if (i != 0) {
          return localv;
        }
        if (e == 0) {}
      }
      else
      {
        this.b.b = localv;
      }
    }
    else
    {
      localv.a = this.b;
      this.b = localv;
    }
    this.a += 1;
    this.d += 1;
    return localv;
  }
  
  public v b(Object paramObject)
  {
    v localv = e(paramObject);
    if (this.c == null)
    {
      this.b = (this.c = localv);
    }
    else
    {
      this.c.a = localv;
      localv.b = this.c;
      this.c = localv;
    }
    this.a += 1;
    this.d += 1;
    return localv;
  }
  
  public void a(v paramv)
  {
    int i = f;
    paramv.b = null;
    paramv.a = null;
    if (i == 0)
    {
      if (this.c == null)
      {
        this.b = (this.c = paramv);
        if (i != 0) {
          return;
        }
        if (e == 0) {}
      }
      else
      {
        this.c.a = paramv;
      }
    }
    else
    {
      paramv.b = this.c;
      this.c = paramv;
    }
    this.d += 1;
    this.a += 1;
  }
  
  public void b(v paramv)
  {
    int i = f;
    paramv.b = null;
    paramv.a = null;
    if (i == 0)
    {
      if (this.b == null)
      {
        this.b = (this.c = paramv);
        if (i != 0) {
          return;
        }
        if (e == 0) {}
      }
      else
      {
        this.b.b = paramv;
      }
    }
    else
    {
      paramv.a = this.b;
      this.b = paramv;
    }
    this.d += 1;
    this.a += 1;
  }
  
  public boolean add(Object paramObject)
  {
    b(paramObject);
    return true;
  }
  
  public boolean addAll(Collection paramCollection)
  {
    int j = f;
    int i = e;
    boolean bool = false;
    if (j == 0) {
      if ((paramCollection instanceof z))
      {
        localObject = ((z)paramCollection).f();
        do
        {
          if (localObject == null) {
            break;
          }
          if (i != 0) {
            break label121;
          }
          if (add(((v)localObject).c())) {
            bool = true;
          }
          localObject = ((v)localObject).a();
        } while (i == 0);
      }
    }
    Object localObject = paramCollection.iterator();
    do
    {
      do
      {
        if (!((Iterator)localObject).hasNext()) {
          break;
        }
      } while (!add(((Iterator)localObject).next()));
      if (j != 0) {
        break label121;
      }
      if (j == 0)
      {
        if (i != 0) {
          break label121;
        }
        bool = true;
      }
      if (j != 0) {
        break;
      }
    } while (i == 0);
    label121:
    return bool;
  }
  
  public void a(y paramy)
  {
    int j = f;
    do
    {
      int i = e;
      while (i == 0)
      {
        if (!paramy.e()) {
          break;
        }
        b(paramy.j());
        paramy.f();
      }
    } while (j != 0);
  }
  
  public v a(Object paramObject, v paramv)
  {
    int i = f;
    if (i == 0) {
      if (paramv == this.b) {
        return a(paramObject);
      }
    }
    if (i == 0) {
      if (paramv == null) {
        return b(paramObject);
      }
    }
    v localv = e(paramObject);
    a(localv, paramv);
    return localv;
  }
  
  public void a(v paramv1, v paramv2)
  {
    int j = f;
    int i = e;
    if (j == 0) {
      if (paramv2 == null)
      {
        b(paramv1);
        if (i == 0) {
          return;
        }
      }
    }
    if (j == 0) {
      if (paramv2 == this.b)
      {
        if (j != 0) {
          break label58;
        }
        b(paramv1);
        if (i == 0) {
          return;
        }
      }
    }
    label58:
    if (j == 0) {
      if (this.c == null)
      {
        paramv1.b = null;
        paramv1.a = null;
        this.b = (this.c = paramv1);
        if (j != 0) {
          break label134;
        }
        if (i == 0) {
          break label124;
        }
      }
    }
    v localv = paramv2.b;
    paramv2.b = paramv1;
    paramv1.a = paramv2;
    localv.a = paramv1;
    paramv1.b = localv;
    label124:
    this.a += 1;
    label134:
    this.d += 1;
  }
  
  public void b(v paramv1, v paramv2)
  {
    int j = f;
    int i = e;
    if (j == 0) {
      if (paramv2 == null)
      {
        a(paramv1);
        if (i == 0) {
          return;
        }
      }
    }
    if (j == 0) {
      if (paramv2 == this.c)
      {
        if (j != 0) {
          break label58;
        }
        a(paramv1);
        if (i == 0) {
          return;
        }
      }
    }
    label58:
    if (j == 0) {
      if (this.b == null)
      {
        paramv1.b = null;
        paramv1.a = null;
        this.b = (this.c = paramv1);
        if (j != 0) {
          break label134;
        }
        if (i == 0) {
          break label124;
        }
      }
    }
    v localv = paramv2.a;
    paramv2.a = paramv1;
    paramv1.a = localv;
    localv.b = paramv1;
    paramv1.b = paramv2;
    label124:
    this.a += 1;
    label134:
    this.d += 1;
  }
  
  public v b(Object paramObject, v paramv)
  {
    int i = f;
    if (i == 0) {
      if (paramv == this.c) {
        return b(paramObject);
      }
    }
    if (i == 0) {
      if (paramv == null) {
        return a(paramObject);
      }
    }
    v localv = e(paramObject);
    b(localv, paramv);
    return localv;
  }
  
  public int size()
  {
    return this.a;
  }
  
  public boolean isEmpty()
  {
    if (f == 0) {}
    return this.a == 0;
  }
  
  public void clear()
  {
    if (f == 0)
    {
      if (this.a > 0)
      {
        this.b = (this.c = null);
        this.a = 0;
      }
    }
    else {
      this.d += 1;
    }
  }
  
  public Object a()
  {
    return this.b.c;
  }
  
  public Object b()
  {
    Object localObject = a();
    h(f());
    return localObject;
  }
  
  public v c(Object paramObject)
  {
    return a(paramObject);
  }
  
  public Object c()
  {
    return a();
  }
  
  public Object d()
  {
    return this.c.c;
  }
  
  public Object e()
  {
    return h(this.c);
  }
  
  public Object a(int paramInt)
  {
    int k = f;
    int j = e;
    if ((k != 0) || (paramInt >= 0))
    {
      if (k != 0) {
        break label35;
      }
      if (paramInt < size()) {}
    }
    else
    {
      return null;
    }
    label35:
    int i = 0;
    do
    {
      v localv = this.b;
      while (j == 0)
      {
        if (localv == null) {
          break;
        }
        if (k == 0)
        {
          if (paramInt == i) {
            return localv.c;
          }
          localv = localv.a;
          i++;
        }
      }
    } while (k != 0);
    return null;
  }
  
  public int indexOf(Object paramObject)
  {
    int k = f;
    int j = e;
    int i = 0;
    v localv = this.b;
    if (localv != null) {
      if (k == 0)
      {
        if (localv.c != paramObject) {
          if (k != 0) {
            break label68;
          }
        }
      }
      else
      {
        if (localv.c == null) {
          break label64;
        }
        if (k != 0) {
          break label74;
        }
        if (!localv.c.equals(paramObject)) {
          break label64;
        }
      }
    }
    label64:
    label68:
    label74:
    while (k != 0)
    {
      return i;
      localv = localv.a;
      i++;
      if (j == 0) {
        break;
      }
    }
    return -1;
  }
  
  public v f()
  {
    return this.b;
  }
  
  public v g()
  {
    return this.c;
  }
  
  public v c(v paramv)
  {
    return paramv.a;
  }
  
  public v d(v paramv)
  {
    return paramv.b;
  }
  
  public v e(v paramv)
  {
    if (f == 0) {
      if (paramv.a == null) {
        return this.b;
      }
    }
    return paramv.a;
  }
  
  public v f(v paramv)
  {
    if (f == 0) {
      if (paramv.b == null) {
        return this.c;
      }
    }
    return paramv.b;
  }
  
  public Object g(v paramv)
  {
    return paramv.c;
  }
  
  public void a(v paramv, Object paramObject)
  {
    paramv.c = paramObject;
  }
  
  public boolean remove(Object paramObject)
  {
    v localv = d(paramObject);
    if ((f != 0) || (localv != null))
    {
      h(localv);
      return true;
    }
    return false;
  }
  
  public boolean removeAll(Collection paramCollection)
  {
    int k = f;
    int j = e;
    int i = size();
    HashSet localHashSet = (k != 0) || ((paramCollection instanceof Set)) ? (Set)paramCollection : new HashSet(paramCollection);
    v localv = f();
    do
    {
      if (localv == null) {
        break;
      }
      if (k != 0) {
        break label107;
      }
      if (j != 0) {
        break label103;
      }
      if (localHashSet.contains(localv.c())) {
        h(localv);
      }
      localv = localv.a();
    } while (j == 0);
    label103:
    label107:
    return (k == 0) && (i != size());
  }
  
  public boolean retainAll(Collection paramCollection)
  {
    int k = f;
    int j = e;
    int i = size();
    HashSet localHashSet = (k != 0) || ((paramCollection instanceof Set)) ? (Set)paramCollection : new HashSet(paramCollection);
    v localv = f();
    do
    {
      if (localv == null) {
        break;
      }
      if (k != 0) {
        break label107;
      }
      if (j != 0) {
        break label103;
      }
      if (!localHashSet.contains(localv.c())) {
        h(localv);
      }
      localv = localv.a();
    } while (j == 0);
    label103:
    label107:
    return (k == 0) && (i != size());
  }
  
  public Object h(v paramv)
  {
    int j = f;
    int i = e;
    if ((j != 0) || (paramv != this.b))
    {
      if (j != 0) {
        break label52;
      }
      paramv.b.a = paramv.a;
      if (i == 0) {}
    }
    else
    {
      this.b = paramv.a;
    }
    label52:
    if ((j != 0) || (paramv != this.c))
    {
      paramv.a.b = paramv.b;
      if (j != 0) {
        break label106;
      }
      if (i == 0) {}
    }
    else
    {
      this.c = paramv.b;
    }
    this.d += 1;
    this.a -= 1;
    label106:
    return paramv.c;
  }
  
  public Object b(y paramy)
  {
    return h(((c_)paramy).a);
  }
  
  public y h()
  {
    return new c_();
  }
  
  public Iterator iterator()
  {
    return new a_(this, this.b);
  }
  
  public ListIterator listIterator()
  {
    return new b_(this, 0, this.b);
  }
  
  public boolean contains(Object paramObject)
  {
    return d(paramObject) != null;
  }
  
  public boolean containsAll(Collection paramCollection)
  {
    int j = f;
    int i = e;
    Iterator localIterator = paramCollection.iterator();
    while (localIterator.hasNext())
    {
      Object localObject = localIterator.next();
      if (!contains(localObject))
      {
        if ((j != 0) || (i != 0)) {
          break label54;
        }
        return false;
      }
    }
    label54:
    return true;
  }
  
  public v d(Object paramObject)
  {
    int j = f;
    int i = e;
    v localv = this.b;
    if (localv != null) {
      if (j == 0) {
        if (localv.c != paramObject)
        {
          if (j != 0) {
            break label65;
          }
          if (localv.c == null) {
            break label61;
          }
          if (j != 0) {
            break label67;
          }
          if (!localv.c.equals(paramObject)) {
            break label61;
          }
        }
      }
    }
    label61:
    label65:
    label67:
    while (j != 0)
    {
      return localv;
      localv = localv.a;
      if (i == 0) {
        break;
      }
    }
    return null;
  }
  
  public String toString()
  {
    int j = f;
    int i = e;
    StringBuffer localStringBuffer = new StringBuffer(80);
    localStringBuffer.append('[');
    v localv = this.b;
    do
    {
      do
      {
        if (localv == this.c) {
          break;
        }
        localStringBuffer.append(localv.c);
        if (j != 0) {
          break label105;
        }
        localStringBuffer.append(',');
        localv = localv.a;
        if (i != 0) {
          break label104;
        }
      } while (i == 0);
    } while (j != 0);
    if (this.c != null) {
      localStringBuffer.append(this.c.c);
    }
    localStringBuffer.append(']');
    label104:
    label105:
    return localStringBuffer.toString();
  }
  
  public Object[] toArray()
  {
    int k = f;
    int j = e;
    Object[] arrayOfObject = new Object[size()];
    int i = 0;
    do
    {
      v localv = this.b;
      while (j == 0)
      {
        if (localv == null) {
          break;
        }
        if ((k == 0) && (j != 0)) {
          break label65;
        }
        arrayOfObject[i] = localv.c;
        localv = localv.a;
        i++;
      }
    } while (k != 0);
    label65:
    return arrayOfObject;
  }
  
  public Object[] toArray(Object[] paramArrayOfObject)
  {
    int k = f;
    int j = e;
    if (k == 0) {
      if (paramArrayOfObject.length < this.a) {
        paramArrayOfObject = (Object[])Array.newInstance(paramArrayOfObject.getClass().getComponentType(), this.a);
      }
    }
    int i = 0;
    do
    {
      v localv = this.b;
      do
      {
        if (localv == null) {
          break;
        }
        if (k != 0) {
          break label104;
        }
        paramArrayOfObject[(i++)] = localv.c;
        localv = localv.a;
        if (j != 0) {
          return paramArrayOfObject;
        }
      } while (j == 0);
      if (k != 0) {
        break label104;
      }
    } while (k != 0);
    if (paramArrayOfObject.length > i) {
      paramArrayOfObject[i] = null;
    }
    label104:
    return paramArrayOfObject;
  }
  
  public Vector i()
  {
    int j = f;
    int i = e;
    Vector localVector = new Vector(size());
    do
    {
      for (v localv = this.b; i == 0; localv = localv.a)
      {
        if (localv == null) {
          break;
        }
        if (i != 0) {
          break label57;
        }
        localVector.addElement(localv.c);
      }
    } while (j != 0);
    label57:
    return localVector;
  }
  
  public void j()
  {
    int j = f;
    int i = e;
    v localv2 = this.b;
    v localv1;
    if (localv2 != null)
    {
      localv1 = localv2.a;
      localv2.a = localv2.b;
      localv2.b = localv1;
      localv2 = localv2.b;
    }
    for (;;)
    {
      if ((j != 0) || (i == 0))
      {
        if (i == 0) {
          break;
        }
        localv1 = this.b;
        this.b = this.c;
        this.c = localv1;
        if (j == 0) {
          this.d += 1;
        }
      }
    }
  }
  
  public void a(Comparator paramComparator)
  {
    int k = f;
    int j = e;
    if (k == 0)
    {
      if (this.a <= 1) {
        return;
      }
      if (k != 0) {}
    }
    else if (this.a == 2)
    {
      if ((k != 0) || (paramComparator != null))
      {
        if ((k == 0) && (paramComparator.compare(this.b.c, this.c.c) <= 0)) {
          return;
        }
        localObject = this.b.c;
        this.b.c = this.c.c;
        if (k != 0) {
          break label114;
        }
        this.c.c = localObject;
        if (j == 0) {
          return;
        }
      }
    }
    label114:
    Object localObject = toArray();
    l.a((Object[])localObject, paramComparator);
    int i = 0;
    v localv = this.b;
    do
    {
      if (localv == null) {
        break;
      }
      localv.c = localObject[i];
      localv = localv.a;
      i++;
    } while (j == 0);
  }
  
  public void k()
  {
    int k = f;
    int j = e;
    if ((k != 0) || (this.a > 1))
    {
      Object[] arrayOfObject = toArray();
      l.a(arrayOfObject, null);
      int i = 0;
      v localv = this.b;
      do
      {
        if (localv == null) {
          break;
        }
        localv.c = arrayOfObject[i];
        localv = localv.a;
        i++;
      } while (j == 0);
    }
  }
  
  public void a(z paramz)
  {
    int i = f;
    if ((i != 0) || (paramz.a > 0))
    {
      if (i == 0)
      {
        if (this.b == null)
        {
          this.b = paramz.b;
          this.c = paramz.c;
          if (i != 0) {
            break label131;
          }
          if (e == 0) {}
        }
        else
        {
          if (i != 0) {
            break label132;
          }
        }
      }
      else if (paramz.b != null)
      {
        this.c.a = paramz.b;
        paramz.b.b = this.c;
        this.c = paramz.c;
      }
      this.a += paramz.a;
      paramz.b = (paramz.c = null);
      paramz.a = 0;
      paramz.d += 1;
      label131:
      label132:
      this.d += 1;
    }
  }
  
  private v e(Object paramObject)
  {
    return new v(paramObject);
  }
  
  public boolean addAll(int paramInt, Collection paramCollection)
  {
    int j = f;
    int i = e;
    v localv = b(paramInt);
    if (localv.a == null)
    {
      localIterator = paramCollection.iterator();
      do
      {
        if (!localIterator.hasNext()) {
          break;
        }
        add(localIterator.next());
        if ((j == 0) && (i != 0)) {
          break label137;
        }
      } while (i == 0);
    }
    Iterator localIterator = paramCollection.iterator();
    while (j != 0) {
      do
      {
        if (!localIterator.hasNext()) {
          break;
        }
        localv = b(localIterator.next(), localv);
        if ((j == 0) && (i != 0)) {
          break label137;
        }
      } while (i == 0);
    }
    if (j == 0) {}
    label137:
    return !paramCollection.isEmpty();
  }
  
  public final v b(int paramInt)
  {
    int k = f;
    int j = e;
    if ((k != 0) || (paramInt >= 0))
    {
      if (k != 0) {
        break label51;
      }
      if (paramInt < this.a) {}
    }
    else
    {
      throw new IndexOutOfBoundsException(Integer.toString(paramInt));
    }
    label51:
    if ((k != 0) || (paramInt > this.a / 2))
    {
      int i = this.a - 1;
      v localv2 = this.c;
      if (i > paramInt) {
        i--;
      }
      while (k != 0)
      {
        if (k == 0)
        {
          if (j != 0) {
            break label105;
          }
          localv2 = localv2.b;
        }
        if (j == 0) {
          break;
        }
      }
      label105:
      return localv2;
    }
    v localv1 = this.b;
    if (paramInt > 0) {
      paramInt--;
    }
    while (k != 0)
    {
      if (k == 0)
      {
        if (j != 0) {
          break label144;
        }
        localv1 = localv1.a;
      }
      if (j == 0) {
        break;
      }
    }
    label144:
    return localv1;
  }
  
  public int lastIndexOf(Object paramObject)
  {
    int k = f;
    int j = e;
    int i = this.a - 1;
    v localv = this.c;
    if (localv != null) {
      if (k == 0)
      {
        if (localv.c != paramObject) {
          if (k != 0) {
            break label73;
          }
        }
      }
      else
      {
        if (localv.c == null) {
          break label69;
        }
        if (k != 0) {
          break label79;
        }
        if (!localv.c.equals(paramObject)) {
          break label69;
        }
      }
    }
    label69:
    label73:
    label79:
    while (k != 0)
    {
      return i;
      localv = localv.b;
      i--;
      if (j == 0) {
        break;
      }
    }
    return -1;
  }
  
  public Object set(int paramInt, Object paramObject)
  {
    v localv = b(paramInt);
    Object localObject = localv.c;
    localv.c = paramObject;
    return localObject;
  }
  
  public Object remove(int paramInt)
  {
    return h(b(paramInt));
  }
  
  public ListIterator listIterator(int paramInt)
  {
    if (paramInt == this.a)
    {
      b_ localb_ = new b_(this, paramInt - 1, this.c);
      localb_.next();
      return localb_;
    }
    return new b_(this, paramInt, b(paramInt));
  }
  
  public Object get(int paramInt)
  {
    return b(paramInt).c;
  }
  
  public void add(int paramInt, Object paramObject)
  {
    int i = f;
    if (i == 0)
    {
      if (paramInt == this.a)
      {
        if (i != 0) {
          break label42;
        }
        b(paramObject);
      }
    }
    else if (e == 0) {
      return;
    }
    label42:
    a(paramObject, b(paramInt));
  }
  
  public List subList(int paramInt1, int paramInt2)
  {
    throw new UnsupportedOperationException();
  }
  
  public boolean equals(Object paramObject)
  {
    int j = f;
    int i = e;
    if (j == 0) {
      if (!(paramObject instanceof List)) {
        return false;
      }
    }
    if (j == 0) {
      if (paramObject == this) {
        return true;
      }
    }
    List localList = (List)paramObject;
    if ((j != 0) || (localList.size() != this.a)) {
      return false;
    }
    v localv = this.b;
    Iterator localIterator = localList.iterator();
    do
    {
      do
      {
        if (!localIterator.hasNext()) {
          break;
        }
        Object localObject = localIterator.next();
        if (j == 0) {
          if ((localv.c != localObject) && (((j == 0) && (localObject == null)) || ((j != 0) || (!localObject.equals(localv.c))))) {
            return false;
          }
        }
        localv = localv.a;
      } while (i == 0);
    } while (j != 0);
    return true;
  }
  
  public int hashCode()
  {
    int k = f;
    int j = e;
    int i = 1;
    v localv = this.b;
    label60:
    do
    {
      if (localv == null) {
        break;
      }
      Object localObject = localv.c;
      if (k == 0)
      {
        if (localObject == null) {
          i *= 31;
        }
      }
      else
      {
        if (k != 0) {
          continue;
        }
        if (j == 0) {
          break label60;
        }
      }
      i = i * 31 + localObject.hashCode();
      localv = localv.a();
    } while (j == 0);
    return i;
  }
  
  static
  {
    new n();
  }
  
  public class c_
    implements y
  {
    v a;
    public static int b;
    
    protected c_()
    {
      h();
    }
    
    public boolean e()
    {
      return this.a != null;
    }
    
    public void f()
    {
      this.a = this.a.a;
    }
    
    public void g()
    {
      this.a = this.a.b;
    }
    
    public void h()
    {
      this.a = z.this.b;
    }
    
    public void i()
    {
      this.a = z.this.c;
    }
    
    public int k()
    {
      return z.this.a;
    }
    
    public Object j()
    {
      return this.a.c;
    }
  }
  
  static final class b_
    implements ListIterator
  {
    final z a;
    private int b;
    private int c;
    private v d;
    private v e;
    
    b_(z paramz, int paramInt, v paramv)
    {
      this.a = paramz;
      this.b = paramInt;
      this.e = paramv;
      this.c = paramz.d;
    }
    
    private final void a()
    {
      if (this.c != this.a.d) {
        throw new ConcurrentModificationException();
      }
    }
    
    public void set(Object paramObject)
    {
      a();
      if ((z.f != 0) || (this.d != null))
      {
        this.d.a(paramObject);
        if (z.e == 0) {}
      }
      else
      {
        throw new IllegalStateException();
      }
    }
    
    public void add(Object paramObject)
    {
      int i = z.f;
      a();
      if (i == 0) {
        if (this.e != null)
        {
          this.a.a(paramObject, this.e);
          if (i != 0) {
            return;
          }
          if (z.e == 0) {
            break label51;
          }
        }
      }
      this.a.add(paramObject);
      label51:
      this.c = this.a.d;
      this.b += 1;
      this.d = null;
    }
    
    public void remove()
    {
      int i = z.f;
      a();
      if ((i != 0) || (this.d != null))
      {
        if (i == 0) {
          if (this.d.a == this.e) {
            this.b -= 1;
          }
        }
        this.a.h(this.d);
        this.d = null;
        this.c = this.a.d;
        if (z.e == 0) {}
      }
      else
      {
        throw new IllegalStateException();
      }
    }
    
    public int previousIndex()
    {
      a();
      return this.b - 1;
    }
    
    public Object previous()
    {
      int i = z.f;
      a();
      if (i == 0)
      {
        if (this.e != null)
        {
          if (i == 0)
          {
            if (this.e.b != null)
            {
              this.e = this.e.b;
              this.d = this.e;
              this.b -= 1;
            }
          }
          else {
            return this.e.c;
          }
          throw new NoSuchElementException();
        }
        this.e = this.a.c;
      }
      if (i == 0)
      {
        if (this.e != null) {
          this.b -= 1;
        }
      }
      else {
        return this.e.c;
      }
      throw new NoSuchElementException();
    }
    
    public int nextIndex()
    {
      a();
      return this.b;
    }
    
    public Object next()
    {
      a();
      if ((z.f != 0) || (this.e != null))
      {
        Object localObject = this.e.c();
        this.d = this.e;
        this.b += 1;
        this.e = this.e.a();
        return localObject;
      }
      throw new NoSuchElementException();
    }
    
    public boolean hasPrevious()
    {
      int i = z.f;
      a();
      return (i != 0) || (((this.e == null) && ((i == 0) && (this.a.c != null))) || (this.e.b != null));
    }
    
    public boolean hasNext()
    {
      a();
      return this.e != null;
    }
  }
  
  static final class a_
    implements Iterator
  {
    private v a;
    private final z b;
    private int c;
    
    a_(z paramz, v paramv)
    {
      this.a = paramv;
      this.b = paramz;
      this.c = paramz.d;
    }
    
    private final void a()
    {
      if (this.c != this.b.d) {
        throw new ConcurrentModificationException();
      }
    }
    
    public final boolean hasNext()
    {
      a();
      return this.a != null;
    }
    
    public final void remove()
    {
      int j = z.f;
      int i = z.e;
      a();
      if (j == 0) {
        if (this.a == null)
        {
          if ((j != 0) || (this.b.c != null))
          {
            this.b.h(this.b.c);
            if (j != 0) {
              break label84;
            }
            if (i == 0) {}
          }
          else
          {
            throw new IllegalStateException();
          }
          if (j != 0) {
            break label88;
          }
          this.c = this.b.d;
          if (i == 0) {
            label84:
            return;
          }
        }
      }
      label88:
      if ((j != 0) || (this.a.b != null))
      {
        this.b.h(this.a.b);
        this.c = this.b.d;
        if (i == 0) {}
      }
      else
      {
        throw new IllegalStateException();
      }
    }
    
    public final Object next()
    {
      a();
      if ((z.f != 0) || (this.a != null))
      {
        Object localObject = this.a.c();
        this.a = this.a.a();
        return localObject;
      }
      throw new NoSuchElementException();
    }
  }
}



/* Location:           E:\idea\

 * Qualified Name:     a.c.z

 * JD-Core Version:    0.7.0.1

 */